package com.课上案例练习.线程.等待唤醒机制.虚假唤醒;

public class FruitPrinter {
    int count = 1; // 状态变量：1→苹果，2→香蕉

    // 线程A执行：输出苹果
    public void printApple() throws InterruptedException {
        synchronized (this) {
            // 用if判断：如果count不是1，就等待
            while (count != 1) {
                this.wait(); // 等待被唤醒
            }
            // 执行输出
            System.out.println("苹果");
            count = 2; // 切换状态为香蕉
            this.notify(); // 唤醒其他线程
        }
    }

    // 线程B执行：输出香蕉
    public void printBanana() throws InterruptedException {
        synchronized (this) {
            // 用if判断：如果count不是2，就等待
            while (count != 2) {
                this.wait(); // 等待被唤醒
            }
            // 执行输出
            System.out.println("香蕉");
            count = 1; // 切换状态为苹果
            this.notify(); // 唤醒其他线程
        }
    }
}
